Код:
/*:
*-----------------------------------------------------------------------------
* DKR CommentsReader
*-----------------------------------------------------------------------------
* For: RPGMAKER MV
* DKR_CommentsReader.js
*-----------------------------------------------------------------------------
* 08.08.2021 - Версия 1.0.0
*-----------------------------------------------------------------------------
* Поставляется AS-IS.
* Вся ответственность при использовании - на Пользователе!
*-----------------------------------------------------------------------------
*-----------------------------------------------------------------------------
* @author DarchanKaen
* @target MV
* @plugindesc (v.1.0.0) Плагин может получать содержимое Комментариев эвентов, парсить их и искать соответствия.
* @help
* DKR CommentsReader 1.0
* ----------------------------------------------------------------------------
* ---Общая информация:
* Плагин может получать содержимое Комментариев эвентов, парсить их и искать соответствия.
* --Команды (для раздела "Скрипт"):
* DKR.CommentsReader.readEventComments(eventId); - выводит на консоль и возвращает содержимое Комментарием эвента;
* DKR.CommentsReader.assertEventComments(eventId, word); - возвращает true, если хоть один из Комментариев РАВЕН слову - иначе false;
* DKR.CommentsReader.containsEventComments(eventId, word); - возвращает true, если хоть один из Комментариев СОДЕРЖИТ слово - иначе false;
* DKR.CommentsReader.parseEventCommentsData(eventId, wordPattern); - возвращает результат разбора Комментария (вторую часть) ПЕРВОГО схожего слова;
* DKR.CommentsReader.getAllEventMatchWord(word); - возвращает массив эвентов, Комментарий которых СОДЕРЖИТ слово.
* где:
* eventId - Id эвента;
* word - слово в ковычках (например, 'БАГ');
* wordPattern - слово в ковычках с разделителем (например, 'ОЧКИ:'; если в Комментарии указано 'ОЧКИ:29', вернет 29);
* ----------------------------------------------------------------------------
* ----Версия 1.0.0
* - РЕЛИЗ
* ----------------------------------------------------------------------------
*/
var Imported = Imported || {};
Imported.DKR_CommentsReader = true;
var DKR = DKR || {};
DKR.CommentsReader = DKR.CommentsReader || {};
DKR.CommentsReader.version = 1.0;
( () => {
//----DATA
const commentCommandNumberA = 108;
const commentCommandNumberB = 408;
const modeAssert = 'ASSERT';
const modeContains = 'CONTAINS';
//----LOGIC
//--has
let isEventCommentsListHas = function(eventId, logicMode, word){
let hasResult = false;
//console.log('___isEventCommentsListHas_MODE_WORD:', logicMode, word);
let eventCommentsList = getEventCommentsList(eventId);
for(let n = 0; n < eventCommentsList.length; n++){
let currentComment = eventCommentsList[n];
switch(logicMode){
case modeAssert:
if(word.trim() === currentComment){
hasResult = true;
return hasResult;
}
break;
case modeContains:
if( true === currentComment.includes( word.trim() ) ){
hasResult = true;
return hasResult;
}
break;
}
}
return hasResult;
}
//--parse
let parseCommentsData = function(eventId, word, negativeMask){
let сommentData = negativeMask;
let eventCommentsList = getEventCommentsList(eventId);
for(let n = 0; n < eventCommentsList.length; n++){
let currentComment = eventCommentsList[n];
if( true === currentComment.includes( word.trim() ) ){
let reqComment = currentComment;
let reqCommentData = reqComment.split(word)[1].trim();
сommentData = reqCommentData;
break; //ONLY FIRST VALUE!
}
}
return сommentData;
}
//--core
let getEventCommentsList = function(eventId){
let eventToInspect = $gameMap.event(eventId);
let commentsList = [];
if(undefined === eventToInspect.event() || null === eventToInspect.event()){
return inspectResultData;
}
let eventPages = eventToInspect.event().pages;
for(let n = 0; n < eventPages.length; n++){
let eventsCommandsList = eventPages[n].list;
for(let m = 0; m < eventsCommandsList.length; m++){
let currentCommand = eventsCommandsList[m];
if(commentCommandNumberA === currentCommand.code || commentCommandNumberB === currentCommand.code){
let comment = currentCommand.parameters[0].trim();
if(comment.length > 0){
commentsList.push(comment);
}
}
}
}
return commentsList;
}
//----COMMANDS
DKR.CommentsReader.readEventComments = function(eventId){
let eventCommentsList = getEventCommentsList(eventId);
console.log('DKR_CommentsReader_eventCommentsList:', eventCommentsList);
return eventCommentsList;
}
DKR.CommentsReader.assertEventComments = function(eventId, word){
let assertResult = isEventCommentsListHas(eventId, 'ASSERT', word);
//console.log('isEventCommentsListHas_ASSERT__' + word + ': ', assertResult);
return assertResult;
}
DKR.CommentsReader.containsEventComments = function(eventId, word){
let containsResult = isEventCommentsListHas(eventId, 'CONTAINS', word);
//console.log('isEventCommentsListHas_CONTAINS__' + word + ': ', containsResult);
return containsResult;
}
DKR.CommentsReader.parseEventCommentsData = function(eventId, wordPattern){
let parseResult = parseCommentsData(eventId, wordPattern);
//console.log('parseResult__' + wordPattern + ': ', parseResult);
return parseResult;
}
DKR.CommentsReader.getAllEventMatchWord = function(wordPattern){
let matchEventsList = [];
let eventsList = $gameMap.events();
for(let n = 0; n < eventsList.length; n++){
if( true === isEventCommentsListHas(eventsList[n].eventId(), 'CONTAINS', wordPattern) ){
matchEventsList.push(eventsList[n]);
}
}
//console.log('matchEventsList:', matchEventsList);
return matchEventsList;
}
})();
Социальные закладки